#ifndef __DTSU666_H
#define __DTSU666_H

#include "../../../bsp/bsp.h"


#define ADDR_REV            0x0000      //版本号						   s16

#define ADDR_CLR_E          0x0002      //电能清零 CLr.E(1:电能清零)		s16

#define ADDR_Uab            0x2000      //三相线电压数据,单位 V(×0.1V)		float
#define ADDR_Ubc            0x2002      //三相线电压数据,单位 V(×0.1V)		float
#define ADDR_Uca            0x2004      //三相线电压数据,单位 V(×0.1V)		float
#define ADDR_Ua             0x2006      //三相相电压数据,单位 V(×0.1V)		float
#define ADDR_Ub             0x2008      //(三相三线时无效)
#define ADDR_Uc             0x200A      //(三相三线时无效)
#define ADDR_Ia             0x200C      //三相电流数据,单位 A(×0.001A)		float
#define ADDR_Ib             0x200E      //三相电流数据,单位 A(×0.001A)		float
#define ADDR_Ic             0x2010      //三相电流数据,单位 A(×0.001A)		float
#define ADDR_Pt           	0x2012      //合相有功功率,单位 W(×0.1W)		float
#define ADDR_Pa           	0x2014      //A 相有功功率,单位 W(×0.1W)		float
#define ADDR_Pb           	0x2016      //(三相三线时无效)
#define ADDR_Pc           	0x2018      //C 相有功功率,单位 W(×0.1W)		float
#define ADDR_Qt           	0x201A      //合相无功功率,单位 var(×0.1var)	float
#define ADDR_Qa           	0x201C      //A 相无功功率,单位 var(×0.1var) 	float
#define ADDR_Qb           	0x201E      //(三相三线时无效)
#define ADDR_Qc           	0x2020      //C 相无功功率,单位 var(×0.1var) 	float

#define ADDR_PFt			0x202A		//合相功率因数						float

#define ADDR_ImpEp			0x101E		//正向有功总电能					float
#define ADDR_ExpEp			0x1028		//反向有功总电能					float

typedef struct{
    float   Ua;				            //三相相电压数据,单位 V
	float	Ub;				            //三相相电压数据,单位 V
	float	Uc;				            //三相相电压数据,单位 V
	float   Ia;				            //三相电流数据,单位 A
	float	Ib;				            //三相电流数据,单位 A
	float	Ic;				            //三相电流数据,单位 A
	float	Pt;				            //合相有功功率,单位 W
	float	Qt;				            //合相无功功率,单位 var
	float	ImpEp;			            //正向有功总电能,单位 kWh
	float	ExpEp;			            //反向有功总电能,单位 kWh
}Type_Param_Def;

typedef struct{
	uint8_t 	slave_id;    		    //modbus slave id
	uint8_t 	port;    			    //modbus uart port
    uint32_t 	speed;   			    //modbus uart speed
    uint8_t 	rec_data[60];    	    //modbus recive buffer
    uint8_t 	rec_len; 			    //modbus recive data length
}Type_Com_Def;

typedef struct
{
	uint16_t		version;
    uint32_t        logTime;
    bool            isInitOk;
	Type_Com_Def 	com;
	Type_Param_Def 	param;
}Type_DTSU666_Def;

//外部接口通过此结构体获取数据
extern Type_DTSU666_Def DTSU666;

extern int xp_dtsu666_init(void);

#endif